www.gusucode.com > VC++ 机器人语音控制系统 > VC++ 机器人语音控制系统/gusucode/ROBOT/robotView.cpp
//Download by http://www.NewXing.com // robotView.cpp : implementation of the CRobotView class // #include "stdafx.h" #include "robot.h" #include"Label.h" #include "robotDoc.h" #include "robotView.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CRobotView IMPLEMENT_DYNCREATE(CRobotView, CFormView) BEGIN_MESSAGE_MAP(CRobotView, CFormView) //{{AFX_MSG_MAP(CRobotView) ON_WM_CTLCOLOR() ON_WM_TIMER() //}}AFX_MSG_MAP ON_MESSAGE(WM_COMMNOTIFY, OnCommNotify) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CRobotView construction/destruction CRobotView::CRobotView() : CFormView(CRobotView::IDD) { //{{AFX_DATA_INIT(CRobotView) //}}AFX_DATA_INIT // TODO: add construction code here m_ncomand1=10; m_bflag=0; m_nsudu=1; m_ngzq=0; m_nguanjie; m_nfangxiang; m_nmsg[0]=0; m_njishu=0; m_nmsg[1]=0; m_nmsg[2]=0; m_nmsg[3]=0; m_nmsg[4]=0; m_nsum=0; m_ndelay=0; nLength=0; m_recflag=1; m_failflag=1; m_brush.CreateSolidBrush(RGB(40,98,122)); // 生成一绿色刷子 } CRobotView::~CRobotView() { } void CRobotView::DoDataExchange(CDataExchange* pDX) { CFormView::DoDataExchange(pDX); //{{AFX_DATA_MAP(CRobotView) //DDX_Control(pDX, IDC_EDIT1, m_edit1); DDX_Control(pDX, IDC_STATIC_LINK, m_link); DDX_Control(pDX, IDC_STATIC_1, m_ml); DDX_Control(pDX, IDC_STATIC_4, m_workpart); DDX_Control(pDX, IDC_STATIC_COMMAND, m_command); DDX_Control(pDX, IDC_STATIC_STATUS, m_static); DDX_Control(pDX, IDC_STATIC_BUCHANG, m_buchangshu); DDX_Control(pDX, IDC_STATIC_5, m_buchang); DDX_Control(pDX, IDC_STATIC_3, m_sudu); DDX_Control(pDX, IDC_STATIC_2, m_zhuangtai); //}}AFX_DATA_MAP } BOOL CRobotView::PreCreateWindow(CREATESTRUCT& cs) { // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs return CFormView::PreCreateWindow(cs); } ///////////////////////////////////////////////////////////////////////////// // CRobotView diagnostics #ifdef _DEBUG void CRobotView::AssertValid() const { CFormView::AssertValid(); } void CRobotView::Dump(CDumpContext& dc) const { CFormView::Dump(dc); } CRobotDoc* CRobotView::GetDocument() // non-debug version is inline { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CRobotDoc))); return (CRobotDoc*)m_pDocument; } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CRobotView message handlers void CRobotView::OnDraw(CDC* pDC) { // TODO: Add your specialized code here and/or call the base class SuduDisplay(m_nsudu); GzqDisplay(m_ngzq); } void CRobotView::OnInitialUpdate() { CFormView::OnInitialUpdate(); // TODO: Add your specialized code here and/or call the base class m_link.SetLink(TRUE) .SetTextColor(RGB(0,0,255)) .SetFontUnderline(TRUE) .SetLinkCursor(AfxGetApp()->LoadCursor(IDC_ICON1)); m_command.SetFontSize(24) .SetFontName("Terminal") .SetTextColor(RGB(240,240,40)); m_static.SetFontSize(24) .SetTextColor(RGB(240,240,40)); m_workpart.SetFontSize(24) .SetFontBold(TRUE) .SetTextColor(RGB(0,240,0)); m_buchangshu.SetFontSize(24) .SetTextColor(RGB(240,240,40)); m_buchang.SetFontSize(24) .SetFontBold(TRUE) .SetTextColor(RGB(0,240,0)); m_sudu.SetFontSize(24) .SetFontBold(TRUE) .SetTextColor(RGB(0,240,0)); m_zhuangtai.SetFontSize(24) .SetFontBold(TRUE) .SetTextColor(RGB(0,240,0)); m_ml.SetFontSize(24) .SetLinkCursor(AfxGetApp()->LoadCursor(IDC_ICON1)) .SetFontBold(TRUE) .SetTextColor(RGB(0,240,0)); GetParentFrame()->RecalcLayout(); ResizeParentToFit(); } LRESULT CRobotView::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { // TODO: Add your specialized code here and/or call the base class if(message == (WM_USER + 1002)) ProcessMessage(wParam, lParam); else if(message==(WM_USER+1003)) ProcessMyMessage(); return CFormView::WindowProc(message, wParam, lParam); } void CRobotView::ProcessMessage(WPARAM wParam, LPARAM lParam) { CRobotDoc* pDoc=GetDocument(); char* l[57] = {"零","一","二",///012 "三","四","五","六","七","八","九","执行","各关节归零","大臂正转",///12 "大臂反转","小臂正转","小臂反转","手腕正转","手腕反转","手爪张开","手爪闭合","上升","下降","大臂运行",///13--22 "大臂负运行","小臂运行","小臂负运行","手腕运行","手腕负运行","手爪运行","手爪负运行","升降运行",////23---30 "升降负运行","大臂归零","小臂归零","手腕归零","手爪归零","升降归零","速度加","原点记忆",///31---38 "系统复位","示教盒","","","回原点","速度减","区号加","区号减","单步再现","周期再现",///39---48 "连续再现","返回","继续","数据记忆","读取数据","设置串口","打开串口","关闭串口"}; CString strcomand; CString strstatus; m_recflag=1; if(!pDoc->m_bConnected) { KillTimer(1); MessageBox("请先打开串口"); return; } if(wParam==100) { KillTimer(1); if(!m_failflag) { CWnd* pWnd=GetDlgItem(IDC_STATIC_5); pWnd->SetWindowText(""); pWnd=GetDlgItem(IDC_STATIC_BUCHANG); pWnd->SetWindowText(""); pWnd=GetDlgItem(IDC_STATIC_COMMAND); pWnd->SetWindowText("请输入新的命令"); pWnd=GetDlgItem(IDC_STATIC_STATUS); pWnd->SetWindowText("执行完毕"); m_ncomand1=0; } else MessageBox("请检查连线是否正确或下位机是否打开","通信失败",MB_ICONWARNING); } else if(wParam>=11&&wParam<=56) { m_bflag=0; m_ncomand1=wParam; strcomand=l[m_ncomand1]; CWnd* pWnd=GetDlgItem(IDC_STATIC_COMMAND); pWnd->SetWindowText(strcomand); pWnd=GetDlgItem(IDC_STATIC_STATUS); pWnd->SetWindowText(""); pWnd=GetDlgItem(IDC_STATIC_5); pWnd->SetWindowText(""); pWnd=GetDlgItem(IDC_STATIC_BUCHANG); pWnd->SetWindowText(""); m_nsum=0; m_njishu=0; } else if(wParam>=0&&wParam<=9) { if(m_ncomand1>=12&&m_ncomand1<=21) { m_bflag=1; m_nmsg[m_njishu]=wParam; //pWnd=GetDlgItem(IDC_STATIC_COMMAND); //pWnd->SetWindowText(strcomand); CWnd* pWnd=GetDlgItem(IDC_STATIC_5); pWnd->SetWindowText("步长:"); ++m_njishu; if(m_njishu==1) { CString m_stemp; m_nsum=m_nmsg[0]; m_stemp.Format("%d",m_nsum); pWnd=GetDlgItem(IDC_STATIC_BUCHANG); pWnd->SetWindowText(m_stemp); } if(m_njishu==2) { CString m_stemp; m_nsum=m_nmsg[0]*10+m_nmsg[1]; m_stemp.Format("%d",m_nsum); pWnd=GetDlgItem(IDC_STATIC_BUCHANG); pWnd->SetWindowText(m_stemp); } if(m_njishu==3) { CString m_stemp; m_nsum=m_nmsg[0]*100+m_nmsg[1]*10+m_nmsg[2]; //m_nmsg[0]=0; //m_nmsg[1]=0 // m_nmsg[2]=0; // m_njishu=0; m_stemp.Format("%d",m_nsum); pWnd=GetDlgItem(IDC_STATIC_BUCHANG); pWnd->SetWindowText(m_stemp); } if(m_njishu==4) { CString m_stemp; m_nsum=m_nmsg[0]*1000+m_nmsg[1]*100+m_nmsg[2]*10+m_nmsg[3]; m_stemp.Format("%d",m_nsum); pWnd=GetDlgItem(IDC_STATIC_BUCHANG); pWnd->SetWindowText(m_stemp); } if(m_njishu>4) { m_njishu=1; m_nmsg[0]=m_nmsg[4]; CString m_stemp; m_nsum=m_nmsg[0]; m_stemp.Format("%d",m_nsum); pWnd=GetDlgItem(IDC_STATIC_BUCHANG); pWnd->SetWindowText(m_stemp); m_nmsg[1]=0; m_nmsg[2]=0; m_nmsg[3]=0; } } else ; //MessageBox("清先输入运动步数命令"); } else if(wParam=10) { SetTimer(1,500,NULL); if(m_ncomand1>=11&&m_ncomand1<=56) { if(!m_bflag) { strstatus="正在执行命令,请稍后....."; CWnd* pWnd=GetDlgItem(IDC_STATIC_STATUS); pWnd->SetWindowText(strstatus); Execute(m_ncomand1); } else //if(m_ncomand1>=12&&m_ncomand1<=21) { unsigned char m_uhi,m_ulo; m_nmsg[0]=0; m_nmsg[1]=0; m_nmsg[2]=0; m_nmsg[3]=0; m_njishu=0; /// CWnd* pWnd=GetDlgItem(IDC_STATIC_STATUS); /// pWnd->SetWindowText("正在执行命令,请稍后....."); switch(m_ncomand1) { case(12): m_nguanjie=01; m_nfangxiang=00; m_uhi=(unsigned char)(m_nsum/256); m_ulo=(unsigned char)(m_nsum-m_uhi*256); m_ndelay=(m_nsum+500)/m_nsudu; Execute_1(m_nguanjie,m_nfangxiang,m_uhi,m_ulo,m_ndelay); break; case(13): m_nguanjie=0x01; m_nfangxiang=0xff; m_uhi=(unsigned char)(m_nsum/256); m_ulo=(unsigned char)(m_nsum-m_uhi*256); m_ndelay=(m_nsum+500)/m_nsudu; Execute_1(m_nguanjie,m_nfangxiang,m_uhi,m_ulo,m_ndelay); break; case(14): m_nguanjie=0x02; m_nfangxiang=0x00; m_uhi=(unsigned char)(m_nsum/256); m_ulo=(unsigned char)(m_nsum-m_uhi*256); m_ndelay=(m_nsum)/(m_nsudu*3); Execute_1(m_nguanjie,m_nfangxiang,m_uhi,m_ulo,m_ndelay); break; case(15): m_nguanjie=0x02; m_nfangxiang=0xff; m_uhi=(unsigned char)(m_nsum/256); m_ulo=(unsigned char)(m_nsum-m_uhi*256); m_ndelay=(m_nsum)/(m_nsudu*3); Execute_1(m_nguanjie,m_nfangxiang,m_uhi,m_ulo,m_ndelay); break; case(16): m_nguanjie=0x04; m_nfangxiang=0x00; m_uhi=(unsigned char)(m_nsum/256); m_ulo=(unsigned char)(m_nsum-m_uhi*256); m_ndelay=(m_nsum+500)/m_nsudu; Execute_1(m_nguanjie,m_nfangxiang,m_uhi,m_ulo,m_ndelay); break; case(17): m_nguanjie=0x04; m_nfangxiang=0xff; m_uhi=(unsigned char)(m_nsum/256); m_ulo=(unsigned char)(m_nsum-m_uhi*256); m_ndelay=(m_nsum+500)/m_nsudu; Execute_1(m_nguanjie,m_nfangxiang,m_uhi,m_ulo,m_ndelay); break; case(18): m_nguanjie=0x05; m_nfangxiang=0x00; m_uhi=(unsigned char)(m_nsum/256); m_ulo=(unsigned char)(m_nsum-m_uhi*256); m_ndelay=(m_nsum+500)/m_nsudu; Execute_1(m_nguanjie,m_nfangxiang,m_uhi,m_ulo,m_ndelay); break; case(19): m_nguanjie=0x05; m_nfangxiang=0xff; m_uhi=(unsigned char)(m_nsum/256); m_ulo=(unsigned char)(m_nsum-m_uhi*256); m_ndelay=(m_nsum+500)/m_nsudu; Execute_1(m_nguanjie,m_nfangxiang,m_uhi,m_ulo,m_ndelay); break; case(20): m_nguanjie=0x03; m_nfangxiang=0x00; m_uhi=(unsigned char)(m_nsum/256); m_ulo=(unsigned char)(m_nsum-m_uhi*256); m_ndelay=(m_nsum+500)/(m_nsudu*2); Execute_1(m_nguanjie,m_nfangxiang,m_uhi,m_ulo,m_ndelay); break; case(21): m_nguanjie=0x03; m_nfangxiang=0xff; m_uhi=(unsigned char)(m_nsum/256); m_ulo=(unsigned char)(m_nsum-m_uhi*256); m_ndelay=(m_nsum+500)/(m_nsudu*2); Execute_1(m_nguanjie,m_nfangxiang,m_uhi,m_ulo,m_ndelay); break; } } m_failflag=1;} else MessageBox("清先输入命令"); } else MessageBox("不能识别,请重新输入命令"); } void CRobotView::ProcessMyMessage() { CDC *PDc=GetDC(); m_failflag=0; switch(m_ncomand1) { case(37): { m_nsudu++; if(m_nsudu==6) m_nsudu=1; OnDraw(PDc); } break; case(44): { m_nsudu--; if(m_nsudu==0) m_nsudu=5; OnDraw(PDc); } break; case(45): { m_ngzq++; if(m_ngzq==8) m_ngzq=0; OnDraw(PDc); } break; case(46): { m_ngzq--; if(m_ngzq==-1) m_ngzq=7; OnDraw(PDc); } break; } CWnd* pWnd=GetDlgItem(IDC_STATIC_COMMAND); pWnd->SetWindowText("请输入新的命令"); pWnd=GetDlgItem(IDC_STATIC_STATUS); pWnd->SetWindowText("执行完毕"); m_ncomand1=0; //} //else // MessageBox("请检查连线是否正确或下位机是否打开","通信失败",MB_ICONWARNING); } void CRobotView::SuduDisplay(int n) { CWnd* pWnd=GetDlgItem(IDC_STATIC_SUDU); CDC* pControlDC=pWnd->GetDC(); pWnd->Invalidate(); pWnd->UpdateWindow(); pControlDC->SelectStockObject(BLACK_BRUSH); CBitmap mBit; CDC MemDC; MemDC.CreateCompatibleDC(NULL); switch(n) { case 0: mBit.LoadBitmap(IDB_BMP10); break; case 1: mBit.LoadBitmap(IDB_BMP11); break; case 2: mBit.LoadBitmap(IDB_BMP12); break; case 3: mBit.LoadBitmap(IDB_BMP13); break; case 4: mBit.LoadBitmap(IDB_BMP14); break; case 5: mBit.LoadBitmap(IDB_BMP15); break; default: //mBit.LoadBitmap(IDB_BMP0); MessageBox("error"); } CBitmap *pOldBit=MemDC.SelectObject(&mBit); pControlDC->BitBlt(0,0,900,700,&MemDC,0,0,SRCCOPY); MemDC.SelectObject(pOldBit); } void CRobotView::GzqDisplay(int n) { CWnd* pWnd=GetDlgItem(IDC_STATIC_GONGZUOQU); CDC* pControlDC=pWnd->GetDC(); pWnd->Invalidate(); pWnd->UpdateWindow(); pControlDC->SelectStockObject(BLACK_BRUSH); CBitmap mBit; CDC MemDC; MemDC.CreateCompatibleDC(NULL); switch(n) { case 0: mBit.LoadBitmap(IDB_BMP10); break; case 1: mBit.LoadBitmap(IDB_BMP11); break; case 2: mBit.LoadBitmap(IDB_BMP12); break; case 3: mBit.LoadBitmap(IDB_BMP13); break; case 4: mBit.LoadBitmap(IDB_BMP14); break; case 5: mBit.LoadBitmap(IDB_BMP15); break; case 6: mBit.LoadBitmap(IDB_BMP16); break; case 7: mBit.LoadBitmap(IDB_BMP17); break; default: //mBit.LoadBitmap(IDB_BMP0); MessageBox("error"); } CBitmap *pOldBit=MemDC.SelectObject(&mBit); pControlDC->BitBlt(0,0,900,700,&MemDC,0,0,SRCCOPY); MemDC.SelectObject(pOldBit); } void CRobotView::Execute(int n) { CRobotDoc* pDoc=GetDocument(); unsigned char send1; switch(n) { case(11): home(); break; case(12): {//大臂正传 unsigned char send[6]={0x53,0x01,0x00,0x00,0x07,0x18}; for(int i=0;i<=5;i++) pDoc->WriteComm(&send[i],1); Sleep(2000/m_nsudu); break; } case(13): { unsigned char send[6]={0x53,0x01,0xff,0x00,0x07,0x18}; for(int i=0;i<=5;i++) pDoc->WriteComm(&send[i],1); // pDoc->ReadComm(&buf,1); // if(nLength) //// { // str.Format("%d",buf); // m_edit1.SetSel(-1, 0); // m_edit1.ReplaceSel(str); // 向编辑视图中插入收到的字符 // } // else // MessageBox("fjdklfjsdklgjsdfkl"); Sleep(2000/m_nsudu); break; } case(14)://xiaobizhengzhuan { unsigned char send[6]={0x53,0x02,0x00,0x00,0x0f,0xe3}; for(int i=0;i<=5;i++) pDoc->WriteComm(&send[i],1); Sleep(2000/m_nsudu); break; } case(15)://小臂反转 { unsigned char send[6]={0x53,0x02,0xff,0x00,0x0f,0xe3}; for(int i=0;i<=5;i++) pDoc->WriteComm(&send[i],1); Sleep(2000/m_nsudu); break; } case(16)://手腕正转 { unsigned char send[6]={0x53,0x04,0x00,0x00,0x00,0xff}; for(int i=0;i<=5;i++) pDoc->WriteComm(&send[i],1); Sleep(1000/m_nsudu); break; } case(17)://shouwanfanzhuan { unsigned char send[6]={0x53,0x04,0xff,0x00,0x00,0xff}; for(int i=0;i<=5;i++) pDoc->WriteComm(&send[i],1); Sleep(1000/m_nsudu); } break; case(18)://shouzhuazhangkai { unsigned char send[6]={0x53,0x05,0x00,0x00,0x00,0x43}; for(int i=0;i<=5;i++) pDoc->WriteComm(&send[i],1); Sleep(2000/m_nsudu); } break; case(19): { unsigned char send[6]={0x53,0x05,0xff,0x00,0x00,0xf3}; for(int i=0;i<=5;i++) pDoc->WriteComm(&send[i],1); Sleep(2000/m_nsudu); } break; case(20)://shangsheng { unsigned char send[6]={0x53,0x03,0x00,0x00,0x02,0xe3}; for(int i=0;i<=5;i++) pDoc->WriteComm(&send[i],1); Sleep(1000/m_nsudu); } break; case(21): { unsigned char send[6]={0x53,0x03,0xff,0x00,0x02,0xe3}; for(int i=0;i<=5;i++) pDoc->WriteComm(&send[i],1); Sleep(1000/m_nsudu); } break; /* case(22)://dabiyunxing { unsigned char send[3]={0x63,0x01,0x00}; for(int i=0;i<=2;i++) pDoc->WriteComm(&send[i],1); Sleep(2000); } break; case(23): { unsigned char send[3]={0x63,0x01,0xff}; for(int i=0;i<=2;i++) pDoc->WriteComm(&send[i],1); Sleep(2000); } break; case(24)://xiaobiyunxing { unsigned char send[3]={0x63,0x02,0x00}; for(int i=0;i<=2;i++) pDoc->WriteComm(&send[i],1); Sleep(2000); } break; case(25): { unsigned char send[3]={0x63,0x02,0xff}; for(int i=0;i<=2;i++) pDoc->WriteComm(&send[i],1); Sleep(2000); } break; case(26)://shouwanyunxing { unsigned char send[3]={0x63,0x04,0x00}; for(int i=0;i<=2;i++) pDoc->WriteComm(&send[i],1); Sleep(2000); } break; case(27): { unsigned char send[3]={0x63,0x04,0xff}; for(int i=0;i<=2;i++) pDoc->WriteComm(&send[i],1); Sleep(2000); } break; case(28)://shouzhuayunxing { unsigned char send[3]={0x63,0x05,0x00}; for(int i=0;i<=2;i++) pDoc->WriteComm(&send[i],1); Sleep(2000); } break; case(29): { unsigned char send[3]={0x63,0x05,0xff}; for(int i=0;i<=2;i++) pDoc->WriteComm(&send[i],1); Sleep(2000); } break; case(30)://shengjiangyunxing { unsigned char send[3]={0x63,0x03,0x00}; for(int i=0;i<=2;i++) pDoc->WriteComm(&send[i],1); Sleep(2000); } break; case(31): { unsigned char send[3]={0x63,0x05,0xff}; for(int i=0;i<=2;i++) pDoc->WriteComm(&send[i],1); Sleep(2000); } break; */ case(32)://dabiguiling { unsigned char send[2]={0xa3,0x01}; for(int i=0;i<=1;i++) pDoc->WriteComm(&send[i],1); Sleep(18000); } break; case(33)://xiaobiguiling { unsigned char send[2]={0xa3,0x02}; for(int i=0;i<=1;i++) pDoc->WriteComm(&send[i],1); Sleep(15000); } break; case(34)://shouwanguiling { unsigned char send[2]={0xa3,0x04}; for(int i=0;i<=1;i++) pDoc->WriteComm(&send[i],1); Sleep(6000); } break; case(35)://shouzhuaguiling { unsigned char send[2]={0xa3,0x05}; for(int i=0;i<=1;i++) pDoc->WriteComm(&send[i],1); Sleep(6000); } break; case(36)://shengjiangguiling { unsigned char send[2]={0xa3,0x03}; for(int i=0;i<=1;i++) pDoc->WriteComm(&send[i],1); Sleep(10000); } break; case(37)://sudujia { send1=0xb3; pDoc->WriteComm(&send1,1); } Sleep(1000); break; case(38)://yuandianjiyi send1=0x73; pDoc->WriteComm(&send1,1); break; case(39): send1=0xc3; pDoc->WriteComm(&send1,1); break; case(40): send1=0xf6; pDoc->WriteComm(&send1,1); break; case(41): send1=0x83; pDoc->WriteComm(&send1,1); break; case(42): send1=0x93; pDoc->WriteComm(&send1,1); break; case(43): // { // unsigned char send[2]={0x86,0x03}; // for(int i=0;i<=1;i++) // pDoc->WriteComm(&send[i],1); // Sleep(4000); // } send1=0x86; pDoc->WriteComm(&send1,1); break; case(44)://sudujian { send1=0xe3; pDoc->WriteComm(&send1,1); } break; case(45): { send1=0x12; pDoc->WriteComm(&send1,1); } break; case(46): { send1=0x22; pDoc->WriteComm(&send1,1); } break; case(47): //danbuzaixian send1=0x13; pDoc->WriteComm(&send1,1); Sleep(4000); break; case(48): //zhouqizaixian send1=0x23; pDoc->WriteComm(&send1,1); Sleep(8000); break; case(49): //lianxuzaixian send1=0x33; pDoc->WriteComm(&send1,1); break; case(50): //send1=0x32; //pDoc->WriteComm(&send1,1); break; case(51): break; case(52): send1=0x43; pDoc->WriteComm(&send1,1); break; case(53): break; case(54): pDoc->OnSetupcomm(); break; case(55): pDoc->OnOpencomm(); break; default: pDoc->OnClosecomm(); break; } } //void CRobotView::OnButton3() //{ // TODO: Add your control notification handler code here // SendMessage(WM_USER + 1002,10,0); //} void CRobotView::Execute_1(unsigned char a,unsigned char b,unsigned char c,unsigned char d,int e) { CRobotDoc* pDoc=GetDocument(); unsigned char send[6]={0x53,a,b,0x00,c,d}; for(int i=0;i<=5;i++) pDoc->WriteComm(&send[i],1); Sleep(m_ndelay); } HBRUSH CRobotView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Change any attributes of the DC here switch(nCtlColor) { case CTLCOLOR_DLG: { //pDC->SetBkMode(TRANSPARENT); return m_brush; //返加绿色刷子 } case CTLCOLOR_STATIC: { //返加绿色刷子 // pDC->SetBkMode(TRANSPARENT); return m_brush; } } // TODO: Return a different brush if the default is not desired return hbr; } void CRobotView::home() { SendMessage(WM_USER+1002,32,0); SendMessage(WM_USER+1002,10,0); Sleep(1000); SendMessage(WM_USER+1002,33,0); SendMessage(WM_USER+1002,10,0); Sleep(1000); SendMessage(WM_USER+1002,34,0); SendMessage(WM_USER+1002,10,0); Sleep(1000); SendMessage(WM_USER+1002,35,0); SendMessage(WM_USER+1002,10,0); Sleep(1000); SendMessage(WM_USER+1002,36,0); SendMessage(WM_USER+1002,10,0); Sleep(1000); } LRESULT CRobotView::OnCommNotify(WPARAM wParam, LPARAM lParam) { unsigned char buf; CWnd* pWnd=GetDlgItem(IDC_STATIC_COMMAND); CString str1,str2; CRobotDoc* pDoc=GetDocument(); m_recflag=0; if(!pDoc->m_bConnected || (wParam & EV_RXCHAR)!=EV_RXCHAR) // 是否是EV_RXCHAR事件? { SetEvent(pDoc->m_hPostMsgEvent); // 允许发送下一个WM_COMMNOTIFY消息 return 0L; } nLength=pDoc->ReadComm(&buf,1); if(nLength) { // str1.Format("%d",buf); //m_edit1.SetSel(-1, 0); // m_edit1.ReplaceSel(str1); // 向编辑视图中插入收到的字符 str2="正在执行命令,请稍后....."; pWnd->SetWindowText(str2); SendMessage(WM_USER+1003); } SetEvent(pDoc->m_hPostMsgEvent); // 允许发送下一个WM_COMMNOTIFY消息 return 0L; } void CRobotView::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default SendMessage(WM_USER+1002,100); CFormView::OnTimer(nIDEvent); }